<?php
/*
 * 模块管理
 * @package    system
 * @author     Mark
 * @copyright  Copyright (c) 2013 ixdcw team
 * @version    $Id: f979cd472c955d3f2b28ed10da4a5d9b51c9e5bf $
 */
defined('IN_IXDCW') or exit('Access Denied');
/**
 * Class Module
 */
class Module {

	/**
	 * 获取所有的模块信息
	 * @return mixed
	 */
	public static function getModules() {
		$_cache = self::_getCache();
		return $_cache['module'];
	}

	/**
	 * 获取网站设置
	 * @param string $key
	 * @return string
	 */
	public static function siteSetting($key = '') {
		$_cache = self::_getCache();
		$siteSetting = $_cache['dt'];
		return $key ? (isset($siteSetting[$key]) ? $siteSetting[$key] : '') : $siteSetting;
	}

	/**
	 * 获取模块信息
	 * @param        $mod
	 * @param string $key
	 * @return mixed
	 */
	public static function info($mod, $key = '') {
		static $_cache = array();
		$_modules = self::getModules();
		if (is_numeric($mod)) {
			if (!isset($_cache[$mod])) {
				$_cache[$mod] = isset($_modules[$mod]) ? $_modules[$mod] : array();
			}
		} else {
			if (!isset($_cache[$mod])) {
				$_cache[$mod] = (array) __($_modules)->find(function($item) use ($mod) {
					return $item['module'] == $mod;
				});
			}
		}
		return $key ? (isset($_cache[$mod][$key]) ? $_cache[$mod][$key] : '') : $_cache[$mod];
	}

	/**
	 * 根据模块的ID获取模块的配置
	 * @param        $mod
	 * @param string $key
	 * @return array|string
	 */
	public static function setting($mod, $key='') {
		static $_cache = array();
		$moduleid = self::info($mod, 'moduleid');
		if (!isset($_cache[$moduleid])) {
			$_cache[$moduleid] = PCache::read('module-'.$moduleid.'.php');
			return $key ? (isset($_cache[$moduleid][$key]) ? $_cache[$moduleid][$key] : '') : $_cache[$moduleid];
		} else {
			return $key ? '' : array();
		}
	}



	/**
	 * 获取模块的缓存数据
	 * @return array|mixed|string
	 */
	private static function _getCache(){
		return PCache::read('module.php');
	}
}